package com.taobao.api.domain;

import java.util.Date;

import com.taobao.api.TaobaoObject;
import com.taobao.api.internal.mapping.ApiField;

/**
 * 全量、增量的添加政策压缩包的json对应对象
 *
 * @author auto create
 * @since 1.0, null
 */
public class BatchPolicy extends TaobaoObject {

  private static final long serialVersionUID = 5299514435319376822L;

  /**
   * 政策所支持的航空公司二字码.必需参数
   */
  @ApiField("airline")
  private String            airline;

  /**
   * 政策支持的到达机场列表，逗号分隔的机场三字码， 注： 1.让利(8)政策，当到达支持多个(最多25)时，出发只能支持一个；
   * 2.特价(6)/特殊(10)政策，出发/到达城市只支持一个.必需参数
   */
  @ApiField("arr_airports")
  private String            arrAirports;

  /**
   * 扩展字段,json格式： "rfc" 对应值: 1.不退不改不签,2.收费退改签（退、改、签中任意一个收费即为收费退改签）,3.免费退改签 ；
   * "ipt" 对应值 :1:等额行程单 2:不提供发票5:等额“行程单+发票”（对应旧的2） 6:等额发票（对应旧的1）;
   * "fdtod"对应值：起飞时间“0000”为0时0分 "ldtod"对应值：到达时间“2359”为23时59分
   */
  @ApiField("attributes")
  private String            attributes;

  /**
   * 政策是否支持自动HK，默认为不支持
   */
  @ApiField("auto_hk_flag")
  private Boolean           autoHkFlag;

  /**
   * 政策是否支持自动出票，默认不支持， 注：自动出票时，必须同时自动HK
   */
  @ApiField("auto_ticket_flag")
  private Boolean           autoTicketFlag;

  /**
   * @1: [{"matcher":{"mode":"ALL","list":["D"]},"priceStrategy":{"mode":
   * "TICKET_PRICE","modeBaseValue":500,"retention":500,"rebase":-5}}] @2:
   * [{"matcher" :{"mode":"ALL","list":["D"]},"priceStrategy":{"mode":"DISCOUNT"
   * ,"modeBaseValue" :null,"retention":300,"rebase":-5}}] @3:
   * [{"matcher":{"mode":"ALL","list":["D"]},"priceStrategy":{"mode":
   * "Y_DISCOUNT","modeBaseValue":75,"retention":500,"rebase":-5}}] 规则说明：
   * cabin_rules分二个字段：matcher:适应舱位（又包含两个字段：mode：匹配模式枚举(填INCLUDE），list：适应舱位列表），
   * priceStrategy:价格策略（mode:价格模式（让利产品：DISCOUNT，特价特殊产品有四种模式：票面价用TICKET_PRICE，
   * Y舱折扣用Y_DISCOUNT，C舱折扣用C_DISCOUNT，F舱折扣用F_DISCOUNT）；modeBaseValue:
   * 当价格模式mode为DISCOUNT，modeBaseValue不填；当价格模式mode为TICKET_PRICE，
   * modeBaseValue填票面价；当价格模式mode为Y_DISCOUNT/C_DISCOUNT/F_DISCOUNT，
   * modeBaseValue填对应的折扣；retention为返点的百分比；rebase为留钱）
   * 注意：特殊政策不需要舱位时需要传入22；retention、rebase传入小数时，会取整数部分
   */
  @ApiField("cabin_rules")
  private String            cabinRules;

  /**
   * 改签规则
   */
  @ApiField("change_rule")
  private String            changeRule;

  /**
   * 政策适用的星期几，1-7分别表示周一到周日 注：特殊政策不能填写该字段；其它政策填写时， 包含全部时需要设置为1234567
   */
  @ApiField("day_of_weeks")
  private String            dayOfWeeks;

  /**
   * 政策支持的出发机场列表，逗号分隔的机场三字码， 注： 1.让利(8)政策，当出发支持多个(最多25)时，到达只能支持一个；
   * 2.特价(6)/特殊(10)政策，出发/到达城市只支持一个.必需参数
   */
  @ApiField("dep_airports")
  private String            depAirports;

  /**
   * ei项，自动HK，自动出票设定时必需
   */
  @ApiField("ei")
  private String            ei;

  /**
   * 政策旅行有效日期中排除指定日期，设定日期将不在搜索结果页面展现 注：最多排除20天，特殊政策无此设置
   */
  @ApiField("exclude_date")
  private String            excludeDate;

  /**
   * 政策销售日期最早提前天数，-1表示无效
   */
  @ApiField("first_sale_advance_day")
  private Long              firstSaleAdvanceDay;

  /**
   * 扩展标记，按位属性标记 , 从右到左数，第1个位表示：不PAT自动HK 第2个位表示：儿童可与成人同价 比如：“儿童可与成人同价”=true
   * ,“不PAT自动HK”=false,则表示成二进制字符串"10",换算成十进制flags=2
   */
  @ApiField("flags")
  private Long              flags;

  /**
   * 包含/排除的航班号，注意格式： +CA1234,CZ3166，表示包含列表 -CA1234,CZ3166，表示排除列表 默认包含所有航班；
   * 不支持同时包含和排除
   */
  @ApiField("flight_info")
  private String            flightInfo;

  /**
   * 当前政策销售日期最晚 提前天数,-1表示无效
   */
  @ApiField("last_sale_advance_day")
  private Long              lastSaleAdvanceDay;

  /**
   * 代理商对政策的备注信息
   */
  @ApiField("memo")
  private String            memo;

  /**
   * 政策设置为支持自动HK，自动出票时必需
   */
  @ApiField("office_id")
  private String            officeId;

  /**
   * 当前政策的外部产品id，用于关联代理商自身维护的政策id，必需参数，使用接口调用时唯一标识政策
   */
  @ApiField("out_product_id")
  private String            outProductId;

  /**
   * 当前政策的政策类型：6，特价政策；8，让利政策；10，特殊政策，必需参数
   */
  @ApiField("policy_type")
  private Long              policyType;

  /**
   * 退票规则
   */
  @ApiField("refund_rule")
  private String            refundRule;

  /**
   * 签转规则
   */
  @ApiField("reissue_rule")
  private String            reissueRule;

  /**
   * 政策销售日期最晚提前天数，-1表示无效
   */
  @ApiField("sale_end_date")
  private Date              saleEndDate;

  /**
   * 当前政策销售有效日期的开始日期(注意，格式如：20120-03-10 10:30:31 等价2012-03-11)必需参数
   */
  @ApiField("sale_start_date")
  private Date              saleStartDate;

  /**
   * 当前特殊政策的库存信息，特殊政策时必需，待补充
   */
  @ApiField("seat_info")
  private String            seatInfo;

  /**
   * 当前政策是否支持共享航班，默认为不支持共享航班(不支持共享航班时，如果当前航班为非承运航班，则搜索结果也不展现)
   */
  @ApiField("share_support")
  private Boolean           shareSupport;

  /**
   * 默认填写TOP,如需要自定义，必须大写，则按source批量删除时需要在接口中taobao.jipiao.policiesstatus.
   * update指定参数source;通过接口taobao.jipiao.policy.process添加的政策会自动加上source为TOP,
   * 代理商后台页面录入的source为PC,excel上传的source为UPLOAD
   */
  @ApiField("source")
  private String            source;

  /**
   * 当前政策旅行有效日期的结束日期(注意，格式如：20120-03-10 10:30:31 等价2012-03-11)必需参数
   */
  @ApiField("travel_end_date")
  private Date              travelEndDate;

  /**
   * 当前政策旅行有效日期的开始日期(注意，格式，如：2012-03-10 10:30:31 等价2012-03-10)必需参数
   */
  @ApiField("travel_start_date")
  private Date              travelStartDate;

  public String getAirline() {
    return this.airline;
  }

  public void setAirline(String airline) {
    this.airline = airline;
  }

  public String getArrAirports() {
    return this.arrAirports;
  }

  public void setArrAirports(String arrAirports) {
    this.arrAirports = arrAirports;
  }

  public String getAttributes() {
    return this.attributes;
  }

  public void setAttributes(String attributes) {
    this.attributes = attributes;
  }

  public Boolean getAutoHkFlag() {
    return this.autoHkFlag;
  }

  public void setAutoHkFlag(Boolean autoHkFlag) {
    this.autoHkFlag = autoHkFlag;
  }

  public Boolean getAutoTicketFlag() {
    return this.autoTicketFlag;
  }

  public void setAutoTicketFlag(Boolean autoTicketFlag) {
    this.autoTicketFlag = autoTicketFlag;
  }

  public String getCabinRules() {
    return this.cabinRules;
  }

  public void setCabinRules(String cabinRules) {
    this.cabinRules = cabinRules;
  }

  public String getChangeRule() {
    return this.changeRule;
  }

  public void setChangeRule(String changeRule) {
    this.changeRule = changeRule;
  }

  public String getDayOfWeeks() {
    return this.dayOfWeeks;
  }

  public void setDayOfWeeks(String dayOfWeeks) {
    this.dayOfWeeks = dayOfWeeks;
  }

  public String getDepAirports() {
    return this.depAirports;
  }

  public void setDepAirports(String depAirports) {
    this.depAirports = depAirports;
  }

  public String getEi() {
    return this.ei;
  }

  public void setEi(String ei) {
    this.ei = ei;
  }

  public String getExcludeDate() {
    return this.excludeDate;
  }

  public void setExcludeDate(String excludeDate) {
    this.excludeDate = excludeDate;
  }

  public Long getFirstSaleAdvanceDay() {
    return this.firstSaleAdvanceDay;
  }

  public void setFirstSaleAdvanceDay(Long firstSaleAdvanceDay) {
    this.firstSaleAdvanceDay = firstSaleAdvanceDay;
  }

  public Long getFlags() {
    return this.flags;
  }

  public void setFlags(Long flags) {
    this.flags = flags;
  }

  public String getFlightInfo() {
    return this.flightInfo;
  }

  public void setFlightInfo(String flightInfo) {
    this.flightInfo = flightInfo;
  }

  public Long getLastSaleAdvanceDay() {
    return this.lastSaleAdvanceDay;
  }

  public void setLastSaleAdvanceDay(Long lastSaleAdvanceDay) {
    this.lastSaleAdvanceDay = lastSaleAdvanceDay;
  }

  public String getMemo() {
    return this.memo;
  }

  public void setMemo(String memo) {
    this.memo = memo;
  }

  public String getOfficeId() {
    return this.officeId;
  }

  public void setOfficeId(String officeId) {
    this.officeId = officeId;
  }

  public String getOutProductId() {
    return this.outProductId;
  }

  public void setOutProductId(String outProductId) {
    this.outProductId = outProductId;
  }

  public Long getPolicyType() {
    return this.policyType;
  }

  public void setPolicyType(Long policyType) {
    this.policyType = policyType;
  }

  public String getRefundRule() {
    return this.refundRule;
  }

  public void setRefundRule(String refundRule) {
    this.refundRule = refundRule;
  }

  public String getReissueRule() {
    return this.reissueRule;
  }

  public void setReissueRule(String reissueRule) {
    this.reissueRule = reissueRule;
  }

  public Date getSaleEndDate() {
    return this.saleEndDate;
  }

  public void setSaleEndDate(Date saleEndDate) {
    this.saleEndDate = saleEndDate;
  }

  public Date getSaleStartDate() {
    return this.saleStartDate;
  }

  public void setSaleStartDate(Date saleStartDate) {
    this.saleStartDate = saleStartDate;
  }

  public String getSeatInfo() {
    return this.seatInfo;
  }

  public void setSeatInfo(String seatInfo) {
    this.seatInfo = seatInfo;
  }

  public Boolean getShareSupport() {
    return this.shareSupport;
  }

  public void setShareSupport(Boolean shareSupport) {
    this.shareSupport = shareSupport;
  }

  public String getSource() {
    return this.source;
  }

  public void setSource(String source) {
    this.source = source;
  }

  public Date getTravelEndDate() {
    return this.travelEndDate;
  }

  public void setTravelEndDate(Date travelEndDate) {
    this.travelEndDate = travelEndDate;
  }

  public Date getTravelStartDate() {
    return this.travelStartDate;
  }

  public void setTravelStartDate(Date travelStartDate) {
    this.travelStartDate = travelStartDate;
  }

}
